A database is a collection of stored data that is logically related and that is accessible by one or more users. A popular type of database is the relational database management system (RDBMS), which includes relational tables made up of rows (or tuples) and columns (or attributes). Each row represents an occurrence of an entity defined by a table, with an entity being a person, place, or thing about which the table contains information.
Data stored in relational tables are accessed to perform various types of operations, such as reads, writes, joins, and so forth. To access data in a relational table, queries according to a standard database query language are issued, such as the Structured Query Language (SQL). One version of SQL is SQL-92, while another version of SQL is SQL-99 (also referred to as SQL-3).
While SQL-92 provides for relatively simple data types (e.g., integers, characters, strings, and so forth), SQL-99 provides for user-defined data types (UDTs). UDTs are customizable to represent relatively complex data, such as spatial data, image data, video data, audio data, and so forth.
There are several different types of spatial data. As examples, geographic applications and graphics design involve two-dimensional data. Geological applications involve three-dimensional data. In certain other applications, representation in four dimensions is needed, such as the representation of moving three-dimensional objects.
A challenge that has faced developers of database systems is performing spatial joins of spatial objects stored in a database system. Various techniques have been developed, with one example technique based on z-ordering. Z-ordering approximates a given object geometry by recursively decomposing a data space into smaller subspaces, referred to as z-regions or z-cells. Z-ordering allows multiple resolution levels where a single spatial object can be composed of z-regions of varying resolution. Also, sets of spatial objects can be composed of regions of varying resolution. This enables the ability to efficiently manage sets of spatial objects of varying size.
Conventionally, techniques have generally not been developed to enable the efficient processing (e.g., joins) of spatial objects in relatively large database systems that are capable of storing large amounts of data (e.g., hundreds of gigabytes or multiples of terabytes).